/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.actions;

import com.ejb.VotosFachadaRemote;
import com.entity.Votos;
import javax.naming.InitialContext;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Calendar;
/**
 *
 * @author victor
 */
public class AltaTemasVotosForm extends org.apache.struts.action.ActionForm {

    private VotosFachadaRemote VotosFachadaBean;
    private String name;

    private int number;

    private String interprete;
    private String cancion;

    public String getCancion() {
        return cancion;
    }

    public void setCancion(String cancion) {
        this.cancion = formatear(cancion, 25);
    }

    public String getInterprete() {
        return interprete;
    }

    public void setInterprete(String interprete) {
        this.interprete = formatear(interprete, 15);
    }

    /**
     * @return
     */
    public String getName() {
        return name;
    }

    /**
     * @param string
     */
    public void setName(String string) {
        name = string;
    }

    /**
     * @return
     */
    public int getNumber() {
        return number;
    }

    /**
     * @param i
     */
    public void setNumber(int i) {
        number = i;
    }

    /**
     *
     */
    public AltaTemasVotosForm() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * This is the action called from the Struts framework.
     * @param mapping The ActionMapping used to select this instance.
     * @param request The HTTP Request we are processing.
     * @return
     */
    @Override
    public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
        ActionErrors errors = new ActionErrors();
         if (getInterprete() == null || getInterprete().length() < 1)
        {
            errors.add("interprete", new ActionMessage("error.interprete.requerido"));
        }
        if (getCancion() == null || getCancion().length() < 1)
        {
            errors.add("cancion", new ActionMessage("error.cancion.requerida"));
        }
        if (errors.isEmpty()) // ValidaciÃ³n ahora en la base de datos
        {
            // Llamada al Enterprise Bean
            try
            {
                VotosFachadaBean = (VotosFachadaRemote)new InitialContext().lookup("java:comp/env/VotosFachadaBean");
            }catch (Exception e) {}
          if (request.getSession().getAttribute("Id") != null)
          {
            if (VotosFachadaBean!=null & request.getSession().getAttribute("Id").toString().length()>0)
            {
                long idUs = 0;
                String txtId="";
                txtId=(String)request.getSession().getAttribute("Id");
                idUs = Long.parseLong(txtId);

                GregorianCalendar Calendario = new GregorianCalendar();
                GregorianCalendar CalendarioVoto = new GregorianCalendar();
                //dia de hoy
                int dia = Calendario.get(Calendar.DATE);
                int mes = Calendario.get(Calendar.MONTH)+1;
                int anio = Calendario.get(Calendar.YEAR);
                int DiaSemana = Calendario.get(Calendar.DAY_OF_WEEK); //Hoy
                // Convierto el dia de la semana para que sea 1 los lunes
                // y 7 los domingos
                if (DiaSemana == 1) DiaSemana=7; else DiaSemana=DiaSemana-1;

                Votos UltVoto = new Votos();
                Date FechaUltimoVoto = new Date();
                int DiaSemanaVoto=0;
                long Diferencia=0;
                boolean CerrarVotacion=false;
                UltVoto = VotosFachadaBean.ObtenerUltimoVoto();
                if (UltVoto!=null)  // Si ya hay un voto en la semana hago el calculo
                {
                    FechaUltimoVoto = UltVoto.getFecha();
                    CalendarioVoto.setTime(FechaUltimoVoto);
                    DiaSemanaVoto = CalendarioVoto.get(Calendar.DAY_OF_WEEK);
                    if (DiaSemanaVoto == 1) DiaSemanaVoto=7; else DiaSemanaVoto=DiaSemanaVoto-1;
                    Diferencia = (Calendario.getTimeInMillis()-CalendarioVoto.getTimeInMillis())/86400000;
                    if (Diferencia<7 & DiaSemana >= DiaSemanaVoto)
                    {
                       CerrarVotacion=false;
                    } else
                    {
                       CerrarVotacion=true;
                    }
                }
                // -Si ya existe un voto del usuario en la semana actual y
                // la fecha del voto que se realizarÃ¡ ahora no determina que
                // se cierre la votaciÃ³n anterior(1) entonces se regresa un error
                // de votacion dado que el usuario no puede votar nuevamente
                //
                // -Si ya existe un voto del usuario en la semana actual(2) y
                // la fecha del voto que se realizarÃ¡ ahora sÃ­ determina que
                // se cierre la votaciÃ³n anterior(1) entonces un mismo usuario que
                // votÃ³ en la semana anterior puede volver a hacerlo en la
                // actual cerrando la votacion y abriendo una votacion nueva
                // por tanto se continÃºa con la ejecuciÃ³n del mÃ©todo y se prosigue
                // en el Action con el alta de temas, cerrar votaciÃ³n y
                // alta del voto correspondiente.

                if (VotosFachadaBean.ExisteVoto(idUs) & CerrarVotacion==false)
                {
                    errors.add("cancion", new ActionMessage("error.voto.existe"));
                }
            }
          }else errors.add("cancion", new ActionMessage("error.voto.existe"));
        }
        return errors;
    }
public String formatear(String texto, int largo)
{
    texto=texto.replaceAll("Ã¡","á");
    texto=texto.replaceAll("Ã","Á");

    texto=texto.replaceAll("Ã©","é");
    texto=texto.replaceAll("Ã","É");

    texto=texto.replaceAll("Ã","Í");
    texto=texto.replaceAll("Ãº","ú");

    texto=texto.replaceAll("Ã","Ú");
    texto=texto.replaceAll("Ã±","ñ");

    texto=texto.replaceAll("Ã","Ñ");
    texto=texto.replaceAll("Ã³","ó");

    texto=texto.replaceAll("Ã","Ó");
    texto=texto.replaceAll("Ã","í");

    texto=texto.replaceAll("­Â­","");
    texto=texto.replaceAll("­","");

    texto=texto.trim();
    if (texto.length()>largo) texto = texto.substring(0, largo);

    return texto;
}
}
